package cn.vawn.base.util;

import org.apache.commons.codec.digest.DigestUtils;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Add by jianhan on 2018/5/11
 */
public class EncryptUtil {

    public static String md5(String str) {
        return DigestUtils.md5Hex(str);
    }

    // MD5转换
    public static String encryptToMD5(String password) {
        byte[] digesta = null;
        String result = null;
        try {

            // 得到一个MD5的消息摘要   信息摘要是安全的单向哈希函数，它接收任意大小的数据，并输出固定长度的哈希值。
            MessageDigest mdi = MessageDigest.getInstance("MD5");
            // 添加要进行计算摘要的信息     MessageDigest对象通过使用 update方法处理数据， 使用指定的byte数组更新摘要
            mdi.update(password.getBytes("utf-8"));
            // 得到该摘要     摘要更新之后，通过调用digest（）执行哈希计算，获得密文
            digesta = mdi.digest();
//   System.out.println("md5加密后密文："+digesta);
            result = byteToHex(digesta);
        } catch (NoSuchAlgorithmException e) {

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();
        }
        return result;
    }

    /**
     * 将二进制转化为16进制字符串
     */
    public static String byteToHex(byte[] pwd) {
        StringBuilder hs = new StringBuilder("");
        String temp = "";
        for (int i = 0; i < pwd.length; i++) {
            temp = Integer.toHexString(pwd[i] & 0XFF);
            if (temp.length() == 1) {
                hs.append("0").append(temp);
            } else {
                hs.append(temp);
            }
        }
        return hs.toString().toLowerCase();
    }
}
